package com.demo.socket;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;

/**
 * 客户端发送 "hello server" 到服务端
 * @author gy
 * @date 2022/5/4
 */
public class SocketTCP02Client {
    public static void main(String[] args) throws IOException {
        // 思路
        // 1、连接服务器（ip、端口）
        // 解读：连接本机的 9999端口，如果连接成功，返回Socket对象
        Socket socket = new Socket(InetAddress.getLocalHost(), 9999);
        System.out.println("客户端的 socket = "+socket.getClass());

        // 2、连接上后生成Socket，通过socket.getOutputStream
        //得到 和 socket 关联的输出流对象
        OutputStream outputStream = socket.getOutputStream();

        // 3、通过输出流，写入数据到 数据通道
        outputStream.write("hello server".getBytes());
        // 细节：设置结束标记
        socket.shutdownOutput();

        // 4、获取和socket相关的输入流，读取数据并显示
        InputStream inputStream = socket.getInputStream();
        byte[] buf = new byte[1024];
        int readLen = 0;
        while ((readLen = inputStream.read(buf)) != -1) {
            System.out.println(new String(buf, 0, readLen));
        }

        // 5、关闭 流对象 和 socket
        outputStream.close();
        socket.close();
        inputStream.close();
        System.out.println("客户端退出了。。。。");

    }
}
